home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / cutter / cutter.doc next >
Encoding:
Text File  |  1993-07-08  |  15.9 KB  |  271 lines

  1. [BTX]
  2.  +---------------------------------------------------------------------+
  3.  |         ■CUTTER.EXE 簡易文字列処理プログラム■          |
  4.  +---------------------------------------------------------------------+
  5.                                     関西大学コンピュータ同好会・HRRN
  6.  
  7. ★はじめに★
  8.  
  9. ▽CUTTER.EXEは、文章折り畳み、それにともなう禁則処理、種々の文
  10. 字列変換や罫線の変換など、オリジナルテキストを、より汎用的なものにするこ
  11. とを目的としたツールです。
  12.  
  13. ▽CUTTER.EXEのオリジナルプロトは、関西大学コンピュータ同好会に
  14. おける、恒例の占いプログラムの製作現場において、そのデータである日本語文
  15. 章に改行記号が無いばかりに、プログラマが苦労し、プリンタが文句垂れるとい
  16. う事態を改善すべく製作されたものでした。占い用の出力データ入力時に、改行
  17. 記号をいちいち手で入れるなどという、大凡人間のするべきではないような作業
  18. に忙殺されているメンバーを見ている内に、これではいけないと思い立ったとい
  19. うわけです。製作当時、その機能は(全く)盛りだくさんではなく、文章の折り
  20. 畳みと、それに付随する禁則処理をする能力しかありませんでしたが、一度に大
  21. 量のファイルを扱えるよう、ワイルドカードをサポートしていたので、何とか実
  22. 用になっていました。
  23.  
  24. ▽今回、新たにバージョンを上げることにしたのですが、そのきっかけというの
  25. は、前回の低機能に飽きたということもありますが、何よりも(熱烈な)TOW
  26. NSユーザーである一人の後輩から、フリコレ用に「例のプログラム」を使いた
  27. い旨、打診があったことでした。固辞するHRRNを繰り返し説得した彼に負け
  28. て、応募を許可したのですが、さすがにあのままで人様にお見せするのは申し訳
  29. なかったので、今回のバージョンアップになったというわけです。元来類似のプ
  30. ログラムは多くありますが、それなりに便利なように製作したつもりですので、
  31. 一度試しに使ってみてから、デリートして下さい(^^;)。
  32.  
  33.  
  34. ★使い方★
  35.  
  36. ▽使用方法は、折り畳みをしたいテキストファイルを指定するだけですが、その
  37. 折り畳み幅、旧ファイルの保存如何、新たに加えた文字列処理のスイッチ類に関
  38. して、若干の(?)オプションがあります。基本的にはワイルドカードをサポー
  39. トする引数形式ですが、少々汎用性をもたせようと考え、オプションでフィルタ
  40. としても使えます。その代わり、エラーメッセージ等は、全て標準エラー出力に
  41. 出していますので、「メッセージ表示がうるさいのでNULデバイスに捨てる」
  42. ような使い方は出来ません。また、当たり前の話ですが、この手の整形プログラ
  43. ムは、もとよりコンピュータ言語のソースプログラムには馴染みません。整形後
  44. のコンパイラ等による処理結果は、全く未定義です。ただし、文字列処理に関し
  45. ては、何らかの有用な使い方があるかもしれません。
  46.  
  47. ▽以下に、ヘルプ画面を示します。
  48.  +---------------------------------------------------------------------+
  49.  |CUTTER.EXE      (C) HRRN's Program Factory in K.U.C.C.               |
  50.  |                                                                     |
  51.  |・書式                                                                |
  52.  |  CUTTER [{/|-}<オプション>] {{/|-}R[3]|<ファイルネーム>}                       |
  53.  |・ファイルネーム                                                             |
  54.  |  ワイルドカードが可能。Dオプションなしなら、旧ファイルを.OLDで保存                 |
  55.  |・オプションリスト                                                           |
  56.  |  ? H                   ヘルプの表示                                   |
  57.  |  R[{1|2|3}(3)]         1・標準入力を利用2・標準出力を利用3・1&2(フィルタ |
  58.  |)                                                                    |
  59.  |  D[{0|1|2}(1)]         0・.OLDを保護 1・.OLDを更新 2・旧ファイルを削除     |
  60.  |  N                     ファイル終端に1Ahを付けない                      |
  61.  |  B[<バッファサイズ>(4096)]  行バッファのサイズ(大きすぎるとメモリエラーで終了)      |
  62.  |  T[<タブサイズ>(8)]       タブサイズの指定                                |
  63.  |  T{S|T}                S・タブのスペース化 T・スペースのタブ化                |
  64.  |  K[<タテ><ヨコ><カド>(|-+)] NEC,JIS罫線を指定のANK文字に変換             |
  65.  |  SZ{U|L|H}             U・大文字化L・小文字化H・全角英数字カナの半角化 |
  66.  |  SH{U|L|Z}             U,Z・同上Z・ANKの全角化                       |
  67.  |  C[<カットサイズ>(72)]      指定幅ごとに改行を挿入。ナキワカレは+1桁。禁則は+2  |
  68.  |桁。最高で+3                                                          |
  69.  |  C{H|K|N}              H・半角 K・全角記号 N・全角数字を段落頭に指定   |
  70.  |  L                     <5ケタ>:でナンバリングする                         |
  71.  |・[]内は省略可。{|}からは選択。()内はデフォルト値                           |
  72.  +---------------------------------------------------------------------+
  73.  
  74. ▽HELPのみでも、かなりの部分を理解できると思うのですが、形式的に説明
  75. しておきます。以下の説明文中の [] は省略可を、{|}は選択を、()はデフォルト
  76. を表しています。書式は、次の通りです。
  77.  
  78.   CUTTER [{/|-}<オプション>] {{/|-}R[3]|<ファイルネーム>}
  79.  
  80. ▽ファイル名は、DOSのワイルドカードが可能で、複数個書くことができます。
  81. ファイル名間は必ずスペースで区切って下さい。オプションの指定についても同
  82. 様です。通常は、処理前の旧ファイルは、拡張子を.OLDに変更して保存します。
  83. ファイル名を省略してもよいのは、リダイレクトオプションの3が指定されてい
  84. る場合のみで、3を指定した場合、CUTTERは、完全にフィルタとして振る
  85. 舞います。
  86.  
  87. ▽各オプションの機能は、以下の通りです。
  88.  +-----------------------+---------------------------------------------+
  89.  |{?|H}                  |先に示したヘルプ画面を表示して終了します。   |
  90.  +-----------------------+---------------------------------------------+
  91.  |R1                     |標準入力から入力し、指定されたファイルを作成 |
  92.  |                       |します。                                     |
  93.  |R2                     |指定されたファイルから入力し、標準出力に書き |
  94.  |                       |出します。旧ファイルの更新はしません。       |
  95.  |R[3]                   |フィルタコマンドとして振る舞います。         |
  96.  +-----------------------+---------------------------------------------+
  97.  |D0                     |拡張子.OLDを優先します。既存する場合は、異常 |
  98.  |                       |終了し、改変しません。                       |
  99.  |[D[1]]                 |旧ファイルを拡張子.OLDとして順次保存します。 |
  100.  |                       |デフォルト処理です。                         |
  101.  |D3                     |旧ファイルを削除し、保存しません。リネームし |
  102.  |                       |てから削除するので、特殊な専用プログラムを使 |
  103.  |                       |用すれば、復旧できます。ただし、連続して多く |
  104.  |                       |のファイルを処理した場合は、メディア領域が重 |
  105.  |                       |複使用されている可能性が高いので、復旧は期待 |
  106.  |                       |できません。                                 |
  107.  +-----------------------+---------------------------------------------+
  108.  |N                      |通常はファイル終端に1Ahを書き込みますが、こ  |
  109.  |                       |のオプションで抑止できます。                 |
  110.  +-----------------------+---------------------------------------------+
  111.  |B[<バッファサイズ>(4096)]   |このプログラムでは、行単位でメモリを確保して |
  112.  |                       |います。大抵は大きさを予想出来るのですが、最 |
  113.  |                       |初の1ラインが出来ません。このオプションは、 |
  114.  |                       |最初に用意するメモリの大きさを指定するもので |
  115.  |                       |す。デフォルトの4096バイトで、51.2行、約2画 |
  116.  |                       |面分、改行記号無しで処理できるということにな |
  117.  |                       |ります。                                     |
  118.  +-----------------------+---------------------------------------------+
  119.  |T[<タブサイズ>(8)]        |ハードウェアタブの大きさを指定します。常識的 |
  120.  |                       |な値を指定して下さい。これが有効な(必要な) |
  121.  |                       |オプションは、禁則処理、タブ・スペース変換な |
  122.  |                       |どになります。                               |
  123.  +-----------------------+---------------------------------------------+
  124.  |TS                     |タブをスペースに変換します。                 |
  125.  |TT                     |スペースをタブに変換します。極力タブに変換す |
  126.  |                       |るようになっていますので、使用に際しては、注 |
  127.  |                       |意して下さい。                               |
  128.  +-----------------------+---------------------------------------------+
  129.  |K[<タテ><ヨコ><カド>(|-+)]  |NECやJISの罫線文字を、指定された半角文 |
  130.  |                       |字に置き換えます。全角の罫線文字は、半角右付 |
  131.  |                       |けに置き換えられます。このドキュメントも、そ |
  132.  |                       |の機能で置き換えたものです。                 |
  133.  |                       |3文字ともスペースを指定すると、罫線を消去   |
  134.  |                       |できますが、デリミタ文字なので、ダブルクォー |
  135.  |                       |テーションで "/K   " のように、オプションご  |
  136.  |                       |と囲んで指定して下さい。                     |
  137.  +-----------------------+---------------------------------------------+
  138.  |SZU                    |全角英字の大文字化                           |
  139.  |SZL                    |全角英字の小文字化                           |
  140.  |SZH                    |全角英数字カナ記号の半角化。ドキュメントなど |
  141.  |                       |の容量を減らすことに貢献させようと考えてつけ |
  142.  |                       |たオプションです。                           |
  143.  +-----------------------+---------------------------------------------+
  144.  |SHU                    |半角英字の大文字化                           |
  145.  |SHL                    |半角英字の小文字化                           |
  146.  |SHZ                    |半角英数字カナ記号の全角化                   |
  147.  +-----------------------+---------------------------------------------+
  148.  |C[<カットサイズ>(72)]       |文章の折り畳みと、それに付随する禁則処理を指 |
  149.  |                       |定するオプションです。泣き別れで半角1文字、 |
  150.  |                       |禁則で半角2文字、最大で半角3文字、指定幅を |
  151.  |                       |上回ります。                                 |
  152.  +-----------------------+---------------------------------------------+
  153.  |                       |以下のオプションは、折り畳みに付随するもので |
  154.  |                       |す。/C無しでも折り畳みをしますので、注意して |
  155.  |                       |下さい。                                     |
  156.  |CH                     |半角文字を段落頭文字に指定します。           |
  157.  |CK                     |全角記号を段落頭文字に指定します。HRRNのよう |
  158.  |                       |に、段落頭に▽などを使う人には有効です。     |
  159.  |CN                     |全角数字を段落頭文字に指定します。           |
  160.  |                       |通常の段落頭文字は、全半角のスペースとタブ、 |
  161.  |                       |改行記号などです。                           |
  162.  +-----------------------+---------------------------------------------+
  163.  |L                      |#####:の形式で、ノンブルをふります。プログラ |
  164.  |                       |ムの指導書などの作成を意図して付けたオプショ |
  165.  |                       |ンです。                                     |
  166.  +-----------------------+---------------------------------------------+
  167.  
  168. ▽オプションの併用は、以下に示す設計上の特性をご理解の上、細心の注意を払っ
  169. て行って下さい。
  170.  
  171. 《処理の流れ》
  172.              +-------------------------------------------+
  173.              |           ・1ラインの読み込み            |
  174.              +-------------------------------------------+
  175.                                    ↓
  176.              +-------------------------------------------+
  177.              |        ・タブからスペースへの変換         |
  178.              |        ・スペースからタブへの変換         |
  179.              +-------------------------------------------+
  180.                                    ↓
  181.              +-------------------------------------------+
  182.              |       ・全角文字の大文字化小文字化        |
  183.              |       ・半角文字の大文字化小文字化        |
  184.              +-------------------------------------------+
  185.                                    ↓
  186.              +-------------------------------------------+
  187.              |            ・全角文字の半角化             |
  188.              |            ・半角文字の全角化             |
  189.              +-------------------------------------------+
  190.                                    ↓
  191.              +-------------------------------------------+
  192.              |       ・NEC,JIS罫線の文字化        |
  193.              +-------------------------------------------+
  194.                                    ↓
  195.              +-------------------------------------------+
  196.              |           ・折り畳み・禁則処理            |
  197.              +-------------------------------------------+
  198.                                    ↓
  199.              +-------------------------------------------+
  200.              |              ・行番号の付加               |
  201.              +-------------------------------------------+
  202.                                    ↓
  203.              +-------------------------------------------+
  204.              |           (・泣き別れの検査)            |
  205.              +-------------------------------------------+
  206.                                    ↓
  207.              +-------------------------------------------+
  208.              |           ・1ラインの書き込み            |
  209.              +-------------------------------------------+
  210.  
  211. ▽上図のように、ある1ブロックの処理は、その前に位置する全てのブロックの
  212. 処理が済んでから、実行に移されます。1ラインという単位ごとに順番に処理さ
  213. れるので、ファイル全体としては、前のブロックが完全に終了しない内に、次の
  214. 処理がオーバーラップして始められることになります。ラインに要するメモリは
  215. 限られているので、テンポラリファイルの類を使用する必要はなく、よい方法だ
  216. と思って採用しました。ですから、最初と最後以外は、ファイルアクセスをしま
  217. せん(そうでなきゃ、ただでさえテンポラリファイルを書くリダイレクトには使
  218. えないと思うし…)。
  219.  
  220. ▽同じ四角で囲まれたブロック内に併記された処理は、排他的に存在します。で
  221. すから、同時にオプション指定をすることはナンセンスですし、動作が定義され
  222. ていないので、避けて下さい。別のブロックに位置する処理同士なら、問題なく
  223. 動作するはずですが、その場合も、全角半角変換などで行の長さが変化し、罫線
  224. にズレが生ずる可能性など、考慮すべき点があることに気をつけて下さい。
  225.  
  226. ▽折り畳み処理は、その性格上、タブ文字を苦手とします。行頭タブなどは問題
  227. なく処理しますが、折り畳みの位置によっては、行末に飛び出たタブ文字が出現
  228. することがあります。これはバグではなく仕様ですので、予めご了承下さい。も
  229. しもタブ文字にあまり重要性がない場合は、/TSオプションを併用し、タブをスペー
  230. スに変換して下さい。問題なく処理します。
  231.  
  232.  
  233. ▽使用例
  234.  +---------------------------------------------------------------------+
  235.  |   CUTTER URANAI?D.* /D /C38                                        |
  236.  |    CUTTER /K!-* /C FTS.TXT /D2                                      |
  237.  |    CUTTER /TS /C78 FILELIST.DOC                                     |
  238.  |    DIR | CUTTER /R /C16 /CH                                         |
  239.  +---------------------------------------------------------------------+
  240.  
  241. ▽全くオプションを付けず、ファイル名のみ指定して実行した場合は、原則とし
  242. て全く同じものができあがります。ただ、オリジナルテキストが異常だった場合
  243. はこの限りではありません。また、1バイトのサイズの増減が生じる場合があり
  244. ます。これは、EOF文字である1Ahを付けるか否かによるものです。
  245.  
  246. ▽CUTTERは、常時出力を検査し、泣き別れを検出するようになっています。
  247. 泣き別れは、本来あってはならないことなので、
  248.  
  249.   『##### 行に異常があります』
  250.  
  251. というエラーが表示された場合は、このプログラムにバグがあると判断できます。
  252. かなりのチェックをしてありますが、万一このようなエラー表示があった場合は、
  253. バージョンアップを待って下さい。ただし、先に述べたように、オリジナルテキ
  254. ストが異常だった場合、即ちバイナリファイルであったり元々泣き別れを含んで
  255. いるファイルであったりする場合は、かなりの確立で必然的にエラー表示がされ
  256. ます。オプション無しでも、エラーチェックのみ行われているので、先のエラー
  257. がでた場合は、一度オプションを一切付けずにCUTTERを駆動させて下さい。
  258. これでエラーがでないようでしたら、いよいよバグです(うるうる…^^;)。
  259.  
  260.  
  261. ★注意事項★
  262.  
  263. ▽個人の責任で使用して下さい。このプログラムの運用結果には、いかなる状況
  264. においても全く責任が取れません。ご理解願います。また、バグがないことも保
  265. 障できませんし、バグフィクスの義務も負いません。
  266.  
  267. ▽コピーは自由ですが、著作権を放棄するわけではありません。無改造のプログ
  268. ラムを、別の著作名で発表することはできません。
  269.  
  270. [ETX]
  271.